<?php

class persistencia {

	public static $server	= '172.17.3.7'; //desenvolvimento (URSA)
	public static $user		= 'phpuser';
	public static $password = 'c3lt!phpus3r';
	public static $banco	= 'dataflex';
	public static $conexao;

	public static function connect( $bcoBkp = false ) {
		set_time_limit(0);

		self::$conexao = mssql_connect(self::$server, self::$user, self::$password)
			or exit('Não foi possível a conexão com o servidor');

		mssql_select_db(self::$banco, self::$conexao)
			or exit('Não foi possível selecionar o banco de dados: "' . self::$banco . '"');
	}

	public static function disconnect() {
		mssql_close(self::$conexao);
	}

	private static function retornarArrayResultFetchAssoc($result) {
		$arrResult = Array();
		while( $linha = mssql_fetch_assoc($result) ) {
			$arrResult[] =  $linha;
		}
		self::disconnect();

		if ( sizeof($arrResult) === 0 ) {
			$arrResult[0]['intCodErro'] = 1;
			$arrResult[0]['strDescricaoErro'] = 'nenhum registro foi encontrado.';
		}
		return $arrResult;
	}

	public static function retornarLogradouros($logradouro, $codbairro) {
		self::connect();
		$sql = 'dbo.IPTU_retornarLogradouros';
		$stmt = mssql_init($sql);

		if ( $logradouro != '' ) {
			mssql_bind($stmt, '@logradouro', $logradouro, SQLVARCHAR, FALSE);
		}
		if ( $codbairro != 0 ) {
			mssql_bind($stmt, '@codbairro',  $codbairro,  SQLINT4, FALSE);
		}
		$result = mssql_execute($stmt);
		return self::retornarArrayResultFetchAssoc($result);
	}

	public static function retornarImoveisLogradouro($codlog, $numlogini, $numlogfim) {
		self::connect();
		$sql = 'dbo.IPTU_retornarImoveisLogradouro';
		$stmt = mssql_init($sql);

		mssql_bind($stmt, '@codlog',	 $codlog,	  SQLINT4, FALSE);
		if ( $numlogini != '' ) {
			mssql_bind($stmt, '@numlogini',  $numlogini,  SQLINT4, FALSE);
		}
		if ( $numlogfim != '' ) {
			mssql_bind($stmt, '@numlogfim',  $numlogfim,  SQLINT4, FALSE);
		}
		$result = mssql_execute($stmt);
		return self::retornarArrayResultFetchAssoc($result);
	}

	public static function retornarBairro($codbairro) {
		self::connect();
		$sql = 'dbo.IPTU_retornarBairro';
		$stmt = mssql_init($sql);

		if ( $codbairro != 0 ) {
			mssql_bind($stmt, '@codbairro',  $codbairro,  SQLINT4, FALSE);
		}
		$result = mssql_execute($stmt);
		return self::retornarArrayResultFetchAssoc($result);
	}

	public static function retornarDadosInscricao($incricao) {
		self::connect();
		$sql = 'dbo.IPTU_retornarDadosInscricao';
		$stmt = mssql_init($sql);

		if ( $incricao != 0 ) {
			mssql_bind($stmt, '@inscricao',  $incricao,  SQLINT4, FALSE);
		}
		$result = mssql_execute($stmt);
		return self::retornarArrayResultFetchAssoc($result);
	}

	public static function retornarEnderecoInscricao($incricao) {
		self::connect();
		$sql = 'dbo.IPTU_retornarEnderecoInscricao';
		$stmt = mssql_init($sql);

		if ( $incricao != 0 ) {
			mssql_bind($stmt, '@inscricao',  $incricao,  SQLINT4, FALSE);
		}
		$result = mssql_execute($stmt);
		return self::retornarArrayResultFetchAssoc($result);
	}

	public static function retornarIdsDadosInscricao($incricao) {
		self::connect();
		$sql = 'dbo.IPTU_retornarIdsDadosInscricao';
		$stmt = mssql_init($sql);

		if ( $incricao != 0 ) {
			mssql_bind($stmt, '@inscricao',  $incricao,  SQLINT4, FALSE);
		}
		$result = mssql_execute($stmt);
		return self::retornarArrayResultFetchAssoc($result);
	}

	public static function retornarValCampoPorCodTab($codtab) {
		self::connect();
		$sql = 'dbo.IPTU_retornarValCampoPorCodTab';
		$stmt = mssql_init($sql);

		mssql_bind($stmt, '@codtab',  $codtab,  SQLINT4, FALSE);

		$result = mssql_execute($stmt);
		return self::retornarArrayResultFetchAssoc($result);
	}

	public static function inserirAlteracao($matricula, $inscricao, $codtab, $codcampo, $idTransacao) {
		self::connect();
		$sql = 'dbo.IPTU_inserirAlteracao';
		$stmt = mssql_init($sql);

		mssql_bind($stmt, '@matricula',    $matricula, SQLVARCHAR, FALSE);
		mssql_bind($stmt, '@inscricao',    $inscricao, SQLINT4,    FALSE);
		mssql_bind($stmt, '@codtab',       $codtab,    SQLINT4,    FALSE);
		mssql_bind($stmt, '@codcampo',     $codcampo,  SQLINT4,    FALSE);
		mssql_bind($stmt, '@id_transacao', $idTransacao, SQLVARCHAR, FALSE);

		$result = mssql_execute($stmt);
		return self::retornarArrayResultFetchAssoc($result);
	}
	
	public static function alterarStatus($matricula, $inscricao, $status, $id_transacao) {
		self::connect();
		$sql = 'dbo.IPTU_alterarStatus';
		$stmt = mssql_init($sql);

//		echo '<pre>';
//		print_r($matricula);
//		print_r($inscricao);
//		print_r($status);
//		echo '</pre>';
//		exit;

		mssql_bind($stmt, '@matricula',    $matricula, SQLVARCHAR, FALSE);
		mssql_bind($stmt, '@inscricao',    $inscricao, SQLINT4,    FALSE);
		mssql_bind($stmt, '@status',       $status, SQLINT4,    FALSE);
		mssql_bind($stmt, '@id_transacao', $id_transacao, SQLVARCHAR, FALSE);
		
		$result = mssql_execute($stmt);
		return self::retornarArrayResultFetchAssoc($result);
		
	}

	public static function retornarInscricoesMatricula($matricula) {
		self::connect();
		$sql = 'dbo.IPTU_retornarInscricoesMatricula';
		$stmt = mssql_init($sql);

		mssql_bind($stmt, '@matricula', $matricula, SQLVARCHAR, FALSE);
		$result = mssql_execute($stmt);
		return self::retornarArrayResultFetchAssoc($result);
	}

}

// webservices
$nusoappath = 'application/libraries/nusoap-0.7.3/lib/';
require_once($nusoappath.'nusoap.php');

$server = new soap_server;
$server->register('retornarLogradouros');
$server->register('retornarBairro');
$server->register('retornarImoveisLogradouro');
$server->register('retornarDadosInscricao');
$server->register('retornarEnderecoInscricao');
$server->register('retornarIdsDadosInscricao');
$server->register('retornarValCampoPorCodTab');
$server->register('inserirAlteracao');
$server->register('retornarInscricoesMatricula');
$server->register('alterarStatus');

function retornarImoveisLogradouro($codlog, $numlogini, $numlogfim) {
	return persistencia::retornarImoveisLogradouro($codlog, $numlogini, $numlogfim);
}

function retornarLogradouros($logradouro, $codbairro) {
	return persistencia::retornarLogradouros($logradouro, $codbairro);
}

function retornarBairro($codbairro) {
	return persistencia::retornarBairro($codbairro);
}

function retornarDadosInscricao($incricao) {
	return persistencia::retornarDadosInscricao($incricao);
}

function retornarInscricoesMatricula($matricula) {
	return persistencia::retornarInscricoesMatricula($matricula);
}

function retornarEnderecoInscricao($incricao) {
	return persistencia::retornarEnderecoInscricao($incricao);
}

function retornarIdsDadosInscricao($incricao) {
	return persistencia::retornarIdsDadosInscricao($incricao);
}

function retornarValCampoPorCodTab($codtab) {
	return persistencia::retornarValCampoPorCodTab($codtab);
}

function inserirAlteracao($matricula, $inscricao, $codtab, $codcampo, $idTransacao) {
	return persistencia::inserirAlteracao($matricula, $inscricao, $codtab, $codcampo, $idTransacao);
}

function alterarStatus($matricula, $inscricao, $status, $id_transacao){
	return persistencia::alterarStatus($matricula, $inscricao, $status, $id_transacao);
}

function removerCaracteresInvalidos($str) {
	return $str;
}

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
//$data = date('Y-m-d G:i:s.000');
//
//echo $data . '<br><br>';
//
//echo '<pre>';
//print_r( persistencia::inserirAlteracao('t0665367', 585037, 5, 3) );
//echo '</pre>';
//exit;

?>
